Status Quo
library(tidyverse)
compute_panel_circle_drm <- function(data, scales){
data$id <- 1:nrow(data)
data$around <- 1:nrow(data)/nrow(data)
data$circ_angle <- -data$around*2*pi - pi/2
data$x <- data$dist * cos(data$circ_angle)
data$y <- data$dist * sin(data$circ_angle)
data$angle <- -data$around*360 +180
data
}
ggdoremi:::join_phrases_drm_lyrics() %>%
# head(30) %>%
mutate(dist = as.numeric(drm) + 10) %>%
compute_panel_circle_drm() %>%
ggplot() +
ggstamp::stamp_circle(radius = 8+10, alpha = 0, size = .25, linetype = "dotted") +
ggstamp::stamp_circle(radius = 8+12, alpha = 0, size = .25, linetype = "dotted") +
ggstamp::stamp_circle(radius = 8+14, alpha = 0, size = .25, linetype = "dotted") +
aes(x = x, dist = dist, y = y, label = lyric, angle = angle) +
geom_segment(xend = 0, yend = 0) +
geom_point(shape = 21, size = 16, fill = "white") +
# aes(color = doremi) +
geom_text() +
coord_equal()
## Joining with `by = join_by(drm)`
## Joining with `by = join_by(id_phrase, id_in_phrase)`
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_segment()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_text()`).

lyrics_abc <- "a b c d e f g
h i j k l m n o p
q r s t u v
w x y z
Now I know my A B Cs
Next time won't you sing with me"
drm_abc <- "ddsslls
ffmmrrrrd
ssfmmr
sfmr
ddsslls
ffmmrrd"
ggdoremi:::join_phrases_drm_lyrics(drm_abc, lyrics_phrases = lyrics_abc %>% str_to_title()) %>%
# head(30) %>%
mutate(dist = as.numeric(drm) + 10) %>%
compute_panel_circle_drm() %>%
ggplot() +
ggstamp::stamp_circle(radius = 8+10, alpha = 0, size = .25, linetype = "dotted") +
ggstamp::stamp_circle(radius = 8+12, alpha = 0, size = .25, linetype = "dotted") +
ggstamp::stamp_circle(radius = 8+14, alpha = 0, size = .25, linetype = "dotted") +
aes(x = x, dist = dist, y = y, label = lyric, angle = angle) +
geom_segment(xend = 0, yend = 0) +
geom_point(shape = 21, size = 16, fill = "white") +
# aes(color = doremi) +
geom_text() +
coord_equal()
## Joining with `by = join_by(drm)`
## Joining with `by = join_by(id_phrase, id_in_phrase)`

lyrics_doe_a_deer <-
'Doe a deer a fe-male deer
ray a drop of gol-den sun
me a name I call my-self
far a long long way to run
sew a need-le pull-ing thread
la a note to fol-low sol
tea a drink with jam and bread
that will bring us back to do o o o'
drm_doe_a_deer <-
'drmrmrm
rmffmrf
mfsmsms
fsllsfl
sdrmfsl
lrmfslt
tmfslt1
1tlsts1smr'
ggdoremi:::join_phrases_drm_lyrics(drm_doe_a_deer, lyrics_phrases = lyrics_doe_a_deer) %>%
# head(30) %>%
mutate(dist = as.numeric(drm) + 10) %>%
compute_panel_circle_drm() %>%
ggplot() +
ggstamp::stamp_circle(radius = 8+10, alpha = 0, size = .25, linetype = "dotted") +
ggstamp::stamp_circle(radius = 8+12, alpha = 0, size = .25, linetype = "dotted") +
ggstamp::stamp_circle(radius = 8+14, alpha = 0, size = .25, linetype = "dotted") +
ggstamp::stamp_circle(radius = 8+16, alpha = 0, size = .25, linetype = "dotted") +
aes(x = x, dist = dist, y = y, label = lyric, angle = angle) +
geom_segment(xend = 0, yend = 0) +
geom_point(shape = 21, size = 16, fill = "white") +
aes(color = doremi) +
geom_text() +
coord_equal()
## Joining with `by = join_by(drm)`
## Joining with `by = join_by(id_phrase, id_in_phrase)`
